package io;

import java.io.*;

/**
 * 对象流
 * java.io.objectInputStream和ObjectOutputStream
 * 对象流是一种高级流，在流连接中的作用是进行对象序列化与反序列化
 * 对象序列化：将一个对象按照其结构转换为一组字节的过程。
 * 对象反序列化：将一组字节（必须是序列化的一组字节）还原为一个对象的过程。
 *
 * 因此，有了对象流，可以很方便的读写任何Java对象
 */
public class OOSDemo {
    public static void main(String[] args) throws IOException {
        String name="苍老师";
        int age=18;
        String gender="女";
        String[] otherInfo={"是个演员","来自霓虹","会写毛笔字","启蒙老师"};
        Person p=new Person(name,age,gender,otherInfo);

        FileOutputStream fos=new FileOutputStream("person.obj");
        ObjectOutputStream oos=new ObjectOutputStream(fos);
/**
 * 对象输出流在进行对象序列化时要求写出的对象必须实现可序列化接口，否则
 * 会抛出异常：java.io.NotSerializableException
 *
 * 序列化接口：java.io.Serializable
 */
        oos.writeObject(p);
        System.out.println("写出完毕！");
        oos.close();
    }
}
